1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| input: { name: string & "myngx" namespace?: string | *"default" replicas: int | *1 port: int | *80 }
output: { deployment:{ apiVersion: "apps/v1" kind: "Deployment" metadata: { name: input.name if input.namespace != _|_ { namespace: input.namespace } } "spec": { "replicas": input.replicas "selector": { "matchLabels": { "app": input.name } } "template": { "metadata": { "labels": { "app": input.name } } "spec": "containers": [ { "name": "nginx" "image": "nginx:1.18-alpine" "ports": [ { containerPort: input.port } ] } ] } } } }
|
可以写的bat脚本来在电脑的开发环境中生成yaml
1 2
| del nginx.yaml cue export fast/nginx.cue -e output -o nginx.yaml
|
对于可选项的
对应上面的可选项 当遇到可选项的时候 也就是可填可不填的时候 就在上面做个判断 比如那个namespace 如果不写 就是默认的, 那么在输出的时候 就加个if 判断来搞定 , 比如上面的例子 判断可选项的namespace的时候 就加个
1 2 3
| if input.namespace != _|_ { namespace: input.namespace }
|
其中的那个 _*|*_
就是nil
的意思
比如上面那个 也可以加个 是否追加server 比如修改成这样
1 2 3 4 5 6 7 8 9 10 11
| input: { .... serviceEnable: bool | *true ..... }
....
if input.serviceEnable{ service: {....} }
|
环境变量的引用
kv格式的变量的引用
下面举个例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| input: { ... env?: [string]:string }
input: .... env: { "age":"19","myname":"test"}
}
output: { ... if input.env!=_|_{ env: [ for k,v in input.env{ {name:k,value:v} } ] } }
|